Multimedia mobile personalization system

ABSTRACT

A multimedia mobile personalization system provides a remote control that detects a user&#39;s electronic tag, e.g. an RFID tag. The remote control notifies a multimedia device of the user&#39;s identity. The multimedia devices tailors it operations to the user&#39;s preferences stored locally. Multimedia content such as broadcast or recorded television programs, music play lists, and the like could be sorted, displayed, or restricted, depending on the user identifier.

CROSS-REFERENCE TO RELATED APPLICATIONS; PRIORITY CLAIM

This application is a divisional of U.S. application Ser. No.11/105,011, filed Apr. 12, 2005 which claims benefit of ProvisionalAppln. 60/561,558, filed Apr. 12, 2004, the entire contents of which ishereby incorporated by reference as if fully set forth herein, under 35U.S.C. § 119(e). U.S. application Ser. No. 11/105,011 also claimsbenefit as a Continuation-in-part of application Ser. No. 10/843,550,filed May 10, 2004, which is a continuation of Issued U.S. Pat. No.6,757,906 B1, issued on Jun. 29, 2004, which claims benefit ofProvisional Appln. 60/127,178, filed Mar. 30, 1999, the entire contentsof which is hereby incorporated by reference as if fully set forthherein, under 35 U.S.C. § 120. This application is further related toIssued U.S. Pat. No. 6,868,225 B1, issued on Mar. 15, 2005 which claimsbenefit of Provisional Appln. 60/127,178, filed Mar. 30, 1999, theentire contents of which is hereby incorporated by reference as if fullyset forth herein, under 35 U.S.C. § 120.

TECHNICAL FIELD

The invention relates to the automatic configuration of a multimediadevice's operating environment according a mobile user's profile.

BACKGROUND

Multimedia devices such as VCRs, DVD players, MP3 players, cassetteplayers, CD players, video tape editors, and the new class of DigitalVideo Recorders (DVR) are extremely popular with consumers. Almost everyhousehold in the United States has at least one of these devices.

Multimedia devices must have some way of jumping through the programmaterial to allow the user to select his desired position in the programmaterial. This has commonly been achieved using a fast forward andreverse mode. The fast forward mode moves through the program materialin a forward progression and the reverse mode moves backwards in programmaterial.

The user simply presses a button (typically on a remote control) toinitiate a fast forward or reverse mode and then presses a button toterminate the fast forward or reverse mode. A remote control is used ona majority of devices to control the playback of material as well asmenu display and item selection. A DVR, for example, presents the userwith a graphical user interface that allows the user to selecttelevision shows being broadcast or programs that have been stored onthe DVR. A user uses a remote control to navigate through the DVR'smenus and to select menu items and playback recorded programs.

A drawback to a typical DVR's operation, for example, is that the DVRdoes not distinguish between a single user and a family of users. TheDVR recognizes that a remote control is being used, but does notdistinguish which member of a family is using the remote control. TheDVR records programs for an entire family and displays information andrecordings as if a single user has configured the DVR. The DVR does notdistinguish whether a program recorded for an adult family member isbeing viewed by an underage family member.

Further, the DVR retains a user's viewing preferences within the DVRitself. A user that travels frequently is unable to view programs thathis DVR is recording while the user is away from home. The user cannotview those programs until he returns to his home.

It would be advantageous to provide a mobile personalization system thatis able to identify the current user. It would further be advantageousto provide a system that allows a user to transfer his viewing and/oroperational preferences to other devices.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block schematic diagram of a high level view of anembodiment of the invention according to the invention;

FIG. 2 is a block schematic diagram of an embodiment of the inventionusing multiple input and output modules according to the invention;

FIG. 3 is a schematic diagram of an Moving Pictures Experts Group (MPEG)data stream and its video and audio components according to theinvention;

FIG. 4 is a block schematic diagram of a parser and four direct memoryaccess (DMA) input engines contained in the Media Switch according tothe invention;

FIG. 5 is a schematic diagram of the components of a packetizedelementary stream (PES) buffer according to the invention;

FIG. 6 is a schematic diagram of the construction of a PES buffer fromthe parsed components in the Media Switch output circular buffers;

FIG. 7 is a block schematic diagram of the Media Switch and the variouscomponents that it communicates with according to the invention;

FIG. 8 is a block schematic diagram of a high level view of the programlogic according to the invention;

FIG. 9 is a block schematic diagram of a class hierarchy of the programlogic according to the invention;

FIG. 10 is a block schematic diagram of an embodiment of the clip cachecomponent of the invention according to the invention;

FIG. 11 is a block schematic diagram of an embodiment of the inventionthat emulates a broadcast studio video mixer according to the invention;

FIG. 12 is a block schematic diagram of a closed caption parseraccording to the invention;

FIG. 13 is a block schematic diagram of a high level view of anembodiment of the invention utilizing a VCR as an integral component ofthe invention according to the invention;

FIG. 14 is a diagram of a remote control according to the invention;

FIG. 15 is a block schematic diagram of a high level view of anembodiment of the invention showing the viewer interface moduleinteraction according to the invention;

FIG. 16 is a schematic diagram of a central menu screen according to theinvention;

FIG. 17 is a schematic diagram of a program list screen according to theinvention;

FIG. 18 is a schematic diagram of a detailed program information screenaccording to the invention;

FIG. 19 is a schematic diagram of a detailed program information screenaccording to the invention;

FIG. 20a is a schematic diagram of a small banner displayed over programcontent according to the invention;

FIG. 20b is a schematic diagram of a medium banner displayed overprogram content according to the invention;

FIG. 20c is a schematic diagram of a detailed banner displayed overprogram content according to the invention;

FIG. 21 is a schematic diagram of a suggested program list screenaccording to the invention;

FIG. 22 is a schematic diagram of a network listing screen according tothe invention;

FIG. 23 is a schematic diagram of a program theme list screen accordingto the invention;

FIG. 24 is a schematic diagram of a to do list screen according to theinvention;

FIG. 25 is a schematic diagram of a conflict warning screen according tothe invention;

FIG. 26 is a schematic diagram of a trick play bar overlaid on programmaterial according to the invention;

FIG. 27 is a schematic diagram of a the trick bar and its associatedcomponents according to the invention;

FIG. 28 is a schematic diagram of a two column multimedia schedulescreen according to the invention;

FIG. 29 is a schematic diagram of a two column theme-based schedulescreen according to the invention;

FIG. 30 is a schematic diagram of a two column theme-based schedulescreen according to the invention;

FIG. 31 is a schematic diagram of a two column theme-based schedulescreen according to the invention;

FIG. 32 is a schematic diagram of a two column program schedule screenaccording to the invention;

FIG. 33 is a schematic diagram of a two column program schedule screenshowing a program duration indicator according to the invention;

FIG. 34 is a block schematic diagram of a remote control reading an RFIDuser tag according to the invention;

FIG. 35 is a block schematic diagram of a mobile data device accordingto the invention; and

FIG. 36 is a block schematic diagram of a DVR service transferring auser's viewing preferences to a hotel server according to the invention.

DETAILED DESCRIPTION

A method and apparatus for a multimedia mobile personalization system isdescribed. In the following description, for the purposes ofexplanation, numerous specific details are set forth in order to providea thorough understanding of the present invention. It will be apparent,however, that the present invention may be practiced without thesespecific details. In other instances, well-known structures and devicesare shown in block diagram form in order to avoid unnecessarilyobscuring the present invention.

In the following discussion, in references to the drawings like numeralsrefer to like parts throughout the several views.

An embodiment of the invention predicts the position in the programmaterial where the user expects to be when the user stops the fastforward or reverse progression of the program material.

Referring to FIG. 1, an embodiment of the invention has an Input Section101, Media Switch 102, and an Output Section 103. The Input Section 101takes television (TV) input streams in a multitude of forms, forexample, National Television Standards Committee (NTSC) or PALbroadcast, and digital forms such as Digital Satellite System (DSS),Digital Broadcast Services (DBS), or Advanced Television StandardsCommittee (ATSC). DBS, DSS and ATSC are based on standards called MovingPictures Experts Group 2 (MPEG2) and MPEG2 Transport. MPEG2 Transport isa standard for formatting the digital data stream from the TV sourcetransmitter so that a TV receiver can disassemble the input stream tofind programs in the multiplexed signal. The Input Section 101 producesMPEG streams. An MPEG2 transport multiplex supports multiple programs inthe same broadcast channel, with multiple video and audio feeds andprivate data. The Input Section 101 tunes the channel to a particularprogram, extracts a specific MPEG program out of it, and feeds it to therest of the system. Analog TV signals are encoded into a similar MPEGformat using separate video and audio encoders, such that the remainderof the system is unaware of how the signal was obtained. Information maybe modulated into the Vertical Blanking Interval (VBI) of the analog TVsignal in a number of standard ways; for example, the North AmericanBroadcast Teletext Standard (NABTS) may be used to modulate informationonto lines 10 through 20 of an NTSC signal, while the FCC mandates theuse of line 21 for Closed Caption (CC) and Extended Data Services (EDS).Such signals are decoded by the input section and passed to the othersections as if they were delivered via an MPEG2 private data channel.

The Media Switch 102 mediates between a microprocessor CPU 106, harddisk or storage device 105, and memory 104. Input streams are convertedto an MPEG stream and sent to the Media Switch 102. The Media Switch 102buffers the MPEG stream into memory. It then performs two operations ifthe user is watching real time TV: the stream is sent to the OutputSection 103 and it is written simultaneously to the hard disk or storagedevice 105.

The Output Section 103 takes MPEG streams as input and produces ananalog TV signal according to the NTSC, PAL, or other required TVstandards. The Output Section 103 contains an MPEG decoder, On-ScreenDisplay (OSD) generator, analog TV encoder and audio logic. The OSDgenerator allows the program logic to supply images which will beoverlaid on top of the resulting analog TV signal. Additionally, theOutput Section can modulate information supplied by the program logiconto the VBI of the output signal in a number of standard formats,including NABTS, CC and EDS.

With respect to FIG. 2, the invention easily expands to accommodatemultiple Input Sections (tuners) 201, 202, 203, 204, each can be tunedto different types of input. Multiple Output Modules (decoders) 206,207, 208, 209 are added as well. Special effects such as picture in apicture can be implemented with multiple decoders. The Media Switch 205records one program while the user is watching another. This means thata stream can be extracted off the disk while another stream is beingstored onto the disk.

Referring to FIG. 3, the incoming MPEG stream 301 has interleaved video302, 305, 306 and audio 303, 304, 307 segments. These elements must beseparated and recombined to create separate video 308 and audio 309streams or buffers. This is necessary because separate decoders are usedto convert MPEG elements back into audio or video analog components.Such separate delivery requires that time sequence information begenerated so that the decoders may be properly synchronized for accurateplayback of the signal.

The Media Switch enables the program logic to associate proper timesequence information with each segment, possibly embedding it directlyinto the stream. The time sequence information for each segment iscalled a time stamp. These time stamps are monotonically increasing andstart at zero each time the system boots up. This allows the inventionto find any particular spot in any particular video segment. Forexample, if the system needs to read five seconds into an incomingcontiguous video stream that is being cached, the system simply has tostart reading forward into the stream and look for the appropriate timestamp.

A binary search can be performed on a stored file to index into astream. Each stream is stored as a sequence of fixed-size segmentsenabling fast binary searches because of the uniform timestamping. Ifthe user wants to start in the middle of the program, the systemperforms a binary search of the stored segments until it finds theappropriate spot, obtaining the desired results with a minimal amount ofinformation. If the signal were instead stored as an MPEG stream, itwould be necessary to linearly parse the stream from the beginning tofind the desired location.

With respect to FIG. 4, the Media Switch contains four input DirectMemory Access (DMA) engines 402, 403, 404, 405 each DMA engine has anassociated buffer 410, 411, 412, 413. Conceptually, each DMA engine hasa pointer 406, a limit for that pointer 407, a next pointer 408, and alimit for the next pointer 409. Each DMA engine is dedicated to aparticular type of information, for example, video 402, audio 403, andparsed events 405. The buffers 410, 411, 412, 413 are circular andcollect the specific information. The DMA engine increments the pointer406 into the associated buffer until it reaches the limit 407 and thenloads the next pointer 408 and limit 409. Setting the pointer 406 andnext pointer 408 to the same value, along with the corresponding limitvalue creates a circular buffer. The next pointer 408 can be set to adifferent address to provide vector DMA.

The input stream flows through a parser 401. The parser 401 parses thestream looking for MPEG distinguished events indicating the start ofvideo, audio or private data segments. For example, when the parser 401finds a video event, it directs the stream to the video DMA engine 402.The parser 401 buffers up data and DMAs it into the video buffer 410through the video DMA engine 402. At the same time, the parser 401directs an event to the event DMA engine 405 which generates an eventinto the event buffer 413. When the parser 401 sees an audio event, itredirects the byte stream to the audio DMA engine 403 and generates anevent into the event buffer 413. Similarly, when the parser 401 sees aprivate data event, it directs the byte stream to the private data DMAengine 404 and directs an event to the event buffer 413. The MediaSwitch notifies the program logic via an interrupt mechanism when eventsare placed in the event buffer.

Referring to FIGS. 4 and 5, the event buffer 413 is filled by the parser401 with events. Each event 501 in the event buffer has an offset 502,event type 503, and time stamp field 504. The parser 401 provides thetype and offset of each event as it is placed into the buffer. Forexample, when an audio event occurs, the event type field is set to anaudio event and the offset indicates the location in the audio buffer411. The program logic knows where the audio buffer 411 starts and addsthe offset to find the event in the stream. The address offset 502 tellsthe program logic where the next event occurred, but not where it ended.The previous event is cached so the end of the current event can befound as well as the length of the segment.

With respect to FIGS. 5 and 6, the program logic reads accumulatedevents in the event buffer 602 when it is interrupted by the MediaSwitch 601. From these events the program logic generates a sequence oflogical segments 603 which correspond to the parsed MPEG segments 615.The program logic converts the offset 502 into the actual address 610 ofeach segment, and records the event length 609 using the last cachedevent. If the stream was produced by encoding an analog signal, it willnot contain Program Time Stamp (PTS) values, which are used by thedecoders to properly present the resulting output. Thus, the programlogic uses the generated time stamp 504 to calculate a simulated PTS foreach segment and places that into the logical segment timestamp 607. Inthe case of a digital TV stream, PTS values are already encoded in thestream. The program logic extracts this information and places it in thelogical segment timestamp 607.

The program logic continues collecting logical segments 603 until itreaches the fixed buffer size. When this occurs, the program logicgenerates a new buffer, called a Packetized Elementary Stream (PES) 605buffer containing these logical segments 603 in order, plus ancillarycontrol information. Each logical segment points 604 directly to thecircular buffer, e.g., the video buffer 613, filled by the Media Switch601. This new buffer is then passed to other logic components, which mayfurther process the stream in the buffer in some way, such as presentingit for decoding or writing it to the storage media. Thus, the MPEG datais not copied from one location in memory to another by the processor.This results in a more cost effective design since lower memorybandwidth and processor bandwidth is required.

A unique feature of the MPEG stream transformation into PES buffers isthat the data associated with logical segments need not be present inthe buffer itself, as presented above. When a PES buffer is written tostorage, these logical segments are written to the storage medium in thelogical order in which they appear. This has the effect of gatheringcomponents of the stream, whether they be in the video, audio or privatedata circular buffers, into a single linear buffer of stream data on thestorage medium. The buffer is read back from the storage medium with asingle transfer from the storage media, and the logical segmentinformation is updated to correspond with the actual locations in thebuffer 606. Higher level program logic is unaware of thistransformation, since it handles only the logical segments, thus streamdata is easily managed without requiring that the data ever be copiedbetween locations in DRAM by the CPU.

A unique aspect of the Media Switch is the ability to handle high datarates effectively and inexpensively. It performs the functions of takingvideo and audio data in, sending video and audio data out, sending videoand audio data to disk, and extracting video and audio data from thedisk on a low cost platform. Generally, the Media Switch runsasynchronously and autonomously with the microprocessor CPU, using itsDMA capabilities to move large quantities of information with minimalintervention by the CPU.

Referring to FIG. 7, the input side of the Media Switch 701 is connectedto an MPEG encoder 703. There are also circuits specific to MPEG audio704 and vertical blanking interval (VBI) data 702 feeding into the MediaSwitch 701. If a digital TV signal is being processed instead, the MPEGencoder 703 is replaced with an MPEG2 Transport Demultiplexor, and theMPEG audio encoder 704 and VBI decoder 702 are deleted. Thedemultiplexor multiplexes the extracted audio, video and private datachannel streams through the video input Media Switch port.

The parser 705 parses the input data stream from the MPEG encoder 703,audio encoder 704 and VBI decoder 702, or from the transportdemultiplexor in the case of a digital TV stream. The parser 705 detectsthe beginning of all of the important events in a video or audio stream,the start of all of the frames, the start of sequence headers—all of thepieces of information that the program logic needs to know about inorder to both properly play back and perform special effects on thestream, e.g. fast forward, reverse, play, pause, fast/slow play,indexing, and fast/slow reverse play.

The parser 705 places tags 707 into the FIFO 706 when it identifiesvideo or audio segments, or is given private data. The DMA 709 controlswhen these tags are taken out. The tags 707 and the DMA addresses of thesegments are placed into the event queue 708. The frame typeinformation, whether it is a start of a video I-frame, video B-frame,video P-frame, video PES, audio PES, a sequence header, an audio frame,or private data packet, is placed into the event queue 708 along withthe offset in the related circular buffer where the piece of informationwas placed. The program logic operating in the CPU 713 examines eventsin the circular buffer after it is transferred to the DRAM 714.

The Media Switch 701 has a data bus 711 that connects to the CPU 713 andDRAM 714. An address bus 712 is also shared between the Media Switch701, CPU 713, and DRAM 714. A hard disk or storage device 710 isconnected to one of the ports of the Media Switch 701. The Media Switch701 outputs streams to an MPEG video decoder 715 and a separate audiodecoder 717. The audio decoder 717 signals contain audio cues generatedby the system in response to the user's commands on a remote control orother internal events. The decoded audio output from the MPEG decoder isdigitally mixed 718 with the separate audio signal. The resultingsignals contain video, audio, and on screen displays and are sent to theTV 716.

The Media Switch 701 takes in 8-bit data and sends it to the disk, whileat the same time extracts another stream of data off of the disk andsends it to the MPEG decoder 715. All of the DMA engines described abovecan be working at the same time. The Media Switch 701 can be implementedin hardware using a Field Programmable Gate Array (FPGA), ASIC, ordiscrete logic.

Rather than having to parse through an immense data stream looking forthe start of where each frame would be, the program logic only has tolook at the circular event buffer in DRAM 714 and it can tell where thestart of each frame is and the frame type. This approach saves a largeamount of CPU power, keeping the real time requirements of the CPU 713small The CPU 713 does not have to be very fast at any point in time.The Media Switch 701 gives the CPU 713 as much time as possible tocomplete tasks. The parsing mechanism 705 and event queue 708 decouplethe CPU 713 from parsing the audio, video, and buffers and the real timenature of the streams, which allows for lower costs. It also allows theuse of a bus structure in a CPU environment that operates at a muchlower clock rate with much cheaper memory than would be requiredotherwise.

The CPU 713 has the ability to queue up one DMA transfer and can set upthe next DMA transfer at its leisure. This gives the CPU 713 large timeintervals within which it can service the DMA controller 709. The CPU713 may respond to a DMA interrupt within a larger time window becauseof the large latency allowed. MPEG streams, whether extracted from anMPEG2 Transport or encoded from an analog TV signal, are typicallyencoded using a technique called Variable Bit Rate encoding (VBR). Thistechnique varies the amount of data required to represent a sequence ofimages by the amount of movement between those images. This techniquecan greatly reduce the required bandwidth for a signal, howeversequences with rapid movement (such as a basketball game) may be encodedwith much greater bandwidth requirements. For example, the HughesDirecTV satellite system encodes signals with anywhere from 1 to 10 Mb/sof required bandwidth, varying from frame to frame. It would bedifficult for any computer system to keep up with such rapidly varyingdata rates without this structure.

With respect to FIG. 8, the program logic within the CPU has threeconceptual components: sources 801, transforms 802, and sinks 803. Thesources 801 produce buffers of data. Transforms 802 process buffers ofdata and sinks 803 consume buffers of data. A transform is responsiblefor allocating and queuing the buffers of data on which it will operate.Buffers are allocated as if “empty” to sources of data, which give themback “full”. The buffers are then queued and given to sinks as “full”,and the sink will return the buffer “empty”.

A source 801 accepts data from encoders, e.g., a digital satellitereceiver. It acquires buffers for this data from the downstreamtransform, packages the data into a buffer, then pushes the buffer downthe pipeline as described above. The source object 801 does not knowanything about the rest of the system. The sink 803 consumes buffers,taking a buffer from the upstream transform, sending the data to thedecoder, and then releasing the buffer for reuse.

There are two types of transforms 802 used: spatial and temporal.Spatial transforms are transforms that perform, for example, an imageconvolution or compression/decompression on the buffered data that ispassing through. Temporal transforms are used when there is no timerelation that is expressible between buffers going in and buffers comingout of a system. Such a transform writes the buffer to a file 804 on thestorage medium. The buffer is pulled out at a later time, sent down thepipeline, and properly sequenced within the stream.

Referring to FIG. 9, a C++ class hierarchy derivation of the programlogic is shown. The TiVo Media Kernel (Tmk) 904, 908, 913 mediates withthe operating system kernel. The kernel provides operations such as:memory allocation, synchronization, and threading. The TmkCore 904, 908,913 structures memory taken from the media kernel as an object. Itprovides operators, new and delete, for constructing and deconstructingthe object. Each object (source 901, transform 902, and sink 903) ismulti-threaded by definition and can run in parallel.

The TmkPipeline class 905, 909, 914 is responsible for flow controlthrough the system. The pipelines point to the next pipeline in the flowfrom source 901 to sink 903. To pause the pipeline, for example, anevent called “pause” is sent to the first object in the pipeline. Theevent is relayed on to the next object and so on down the pipeline. Thisall happens asynchronously to the data going through the pipeline. Thus,similar to applications such as telephony, control of the flow of MPEGstreams is asynchronous and separate from the streams themselves. Thisallows for a simple logic design that is at the same time powerfulenough to support the features described previously, including pause,rewind, fast forward and others. In addition, this structure allows fastand efficient switching between stream sources, since buffered data canbe simply discarded and decoders reset using a single event, after whichdata from the new stream will pass down the pipeline. Such a capabilityis needed, for example, when switching the channel being captured by theinput section, or when switching between a live signal from the inputsection and a stored stream.

The source object 901 is a TmkSource 906 and the transform object 902 isa TmkXfrm 910. These are intermediate classes that define standardbehaviors for the classes in the pipeline. Conceptually, they handshakebuffers down the pipeline. The source object 901 takes data out of aphysical data source, such as the Media Switch, and places it into a PESbuffer. To obtain the buffer, the source object 901 asks the down streamobject in his pipeline for a buffer (allocEmptyBuf). The source object901 is blocked until there is sufficient memory. This means that thepipeline is self-regulating; it has automatic flow control. When thesource object 901 has filled up the buffer, it hands it back to thetransform 902 through the pushFullBuf function.

The sink 903 is flow controlled as well. It calls nextFullBuf whichtells the transform 902 that it is ready for the next filled buffer.This operation can block the sink 903 until a buffer is ready. When thesink 903 is finished with a buffer (i.e., it has consumed the data inthe buffer) it calls releaseEmptyBuf. ReleaseEmptyBuf gives the bufferback to the transform 902. The transform 902 can then hand that buffer,for example, back to the source object 901 to fill up again. In additionto the automatic flow-control benefit of this method, it also providesfor limiting the amount of memory dedicated to buffers by allowingenforcement of a fixed allocation of buffers by a transform. This is animportant feature in achieving a cost-effective limited DRAMenvironment.

The MediaSwitch class 909 calls the allocEmptyBuf method of theTmkClipCache 912 object and receives a PES buffer from it . It then goesout to the circular buffers in the Media Switch hardware and generatesPES buffers. The MediaSwitch class 909 fills the buffer up and pushes itback to the TmkClipCache 912 object.

The TmkClipCache 912 maintains a cache file 918 on a storage medium. Italso maintains two pointers into this cache: a push pointer 919 thatshows where the next buffer coming from the source 901 is inserted; anda current pointer 920 which points to the current buffer used.

The buffer that is pointed to by the current pointer is handed to theVela decoder class 916. The Vela decoder class 916 talks to the decoder921 in the hardware. The decoder 921 produces a decoded TV signal thatis subsequently encoded into an analog TV signal in NTSC, PAL or otheranalog format. When the Vela decoder class 916 is finished with thebuffer it calls releaseEmptyBuf.

The structure of the classes makes the system easy to test and debug.Each level can be tested separately to make sure it performs in theappropriate manner, and the classes may be gradually aggregated toachieve the desired functionality while retaining the ability toeffectively test each object.

The control object 917 accepts commands from the user and sends eventsinto the pipeline to control what the pipeline is doing. For example, ifthe user has a remote control and is watching TV, the user presses pauseand the control object 917 sends an event to the sink 903, that tells itpause. The sink 903 stops asking for new buffers. The current pointer920 stays where it is at. The sink 903 starts taking buffers out againwhen it receives another event that tells it to play. The system is inperfect synchronization; it starts from the frame that it stopped at.

The remote control may also have a fast forward key. When the fastforward key is pressed, the control object 917 sends an event to thetransform 902 that tells it to move forward two seconds. The transform902 finds that the two second time span requires it to move forwardthree buffers. It then issues a reset event to the downstream pipeline,so that any queued data or state that may be present in the hardwaredecoders is flushed. This is a critical step, since the structure ofMPEG streams requires maintenance of state across multiple frames ofdata, and that state will be rendered invalid by repositioning thepointer. It then moves the current pointer 920 forward three buffers.The next time the sink 903 calls nextFullBuf it gets the new currentbuffer. The same method works for fast reverse in that the transform 902moves the current pointer 920 backwards.

A system clock reference resides in the decoder. The system clockreference is sped up for fast play or slowed down for slow play. Thesink simply asks for full buffers faster or slower, depending on theclock speed.

With respect to FIG. 10, two other objects derived from the TmkXfrmclass are placed in the pipeline for disk access. One is calledTmkClipReader 1003 and the other is called TmkClipWriter 1001. Bufferscome into the TmkClipWriter 1001 and are pushed to a file on a storagemedium 1004. TmkClipReader 1003 asks for buffers which are taken off ofa file on a storage medium 1005. A TmkClipReader 1003 provides only theallocEmptyBuf and pushFullBuf methods, while a TmkClipWriter 1001provides only the nextFullBuf and releaseEmptyBuf methods. ATmkClipReader 1003 therefore performs the same function as the input, or“push” side of a TmkClipCache 1002, while a TmkClipWriter 1001 thereforeperforms the same function as the output, or “pull” side of aTmkClipCache 1002.

Referring to FIG. 11, an embodiment that accomplishes multiple functionsis shown. A source 1101 has a TV signal input. The source sends data toa PushSwitch 1102 which is a transform derived from TmkXfrm. ThePushSwitch 1102 has multiple outputs that can be switched by the controlobject 1114. This means that one part of the pipeline can be stopped andanother can be started at the users whim. The user can switch todifferent storage devices. The PushSwitch 1102 could output to aTmkClipWriter 1106, which goes onto a storage device 1107 or write tothe cache transform 1103.

An important feature of this apparatus is the ease with which it canselectively capture portions of an incoming signal under the control ofprogram logic. Based on information such as the current time, or perhapsa specific time span, or perhaps via a remote control button press bythe viewer, a TmkClipWriter 1106 may be switched on to record a portionof the signal, and switched off at some later time. This switching istypically caused by sending a “switch” event to the PushSwitch 1102object.

An additional method for triggering selective capture is throughinformation modulated into the VBI or placed into an MPEG private datachannel. Data decoded from the VBI or private data channel is passed tothe program logic. The program logic examines this data to determine ifthe data indicates that capture of the TV signal into which it wasmodulated should begin. Similarly, this information may also indicatewhen recording should end, or another data item may be modulated intothe signal indicating when the capture should end. The starting andending indicators may be explicitly modulated into the signal or otherinformation that is placed into the signal in a standard fashion may beused to encode this information.

With respect to FIG. 12, an example is shown which demonstrates how theprogram logic scans the words contained within the closed caption (CC)fields to determine starting and ending times, using particular words orphrases to trigger the capture. A stream of NTSC or PAL fields 1201 ispresented. CC bytes are extracted from each odd field 1202, and enteredin a circular buffer 1203 for processing by the Word Parser 1204. TheWord Parser 1204 collects characters until it encounters a wordboundary, usually a space, period or other delineating character. Recallfrom above, that the MPEG audio and video segments are collected into aseries of fixed-size PES buffers. A special segment is added to each PESbuffer to hold the words extracted from the CC field 1205. Thus, the CCinformation is preserved in time synchronization with the audio andvideo, and can be correctly presented to the viewer when the stream isdisplayed. This also allows the stored stream to be processed for CCinformation at the leisure of the program logic, which spreads out load,reducing cost and improving efficiency. In such a case, the words storedin the special segment are simply passed to the state table logic 1206.

During stream capture, each word is looked up in a table 1206 whichindicates the action to take on recognizing that word. This action maysimply change the state of the recognizer state machine 1207, or maycause the state machine 1207 to issue an action request, such as “startcapture”, “stop capture”, “phrase seen”, or other similar requests.Indeed, a recognized word or phrase may cause the pipeline to beswitched; for example, to overlay a different audio track if undesirablelanguage is used in the program.

Note that the parsing state table 1206 and recognizer state machine 1207may be modified or changed at any time. For example, a different tableand state machine may be provided for each input channel. Alternatively,these elements may be switched depending on the time of day, or becauseof other events.

Referring to FIG. 11, a PullSwitch is added 1104 which outputs to thesink 1105. The sink 1105 calls nextFullBuf and releaseEmptyBuf to get orreturn buffers from the PullSwitch 1104. The PullSwitch 1104 can haveany number of inputs. One input could be an ActionClip 1113. The remotecontrol can switch between input sources. The control object 1114 sendsan event to the PullSwitch 1104, telling it to switch. It will switchfrom the current input source to whatever input source the controlobject selects.

An ActionClip class provides for sequencing a number of different storedsignals in a predictable and controllable manner, possibly with theadded control of viewer selection via a remote control. Thus, it appearsas a derivative of a TmkXfrm object that accepts a “switch” event forswitching to the next stored signal.

This allows the program logic or user to create custom sequences ofvideo output. Any number of video segments can be lined up and combinedas if the program logic or user were using a broadcast studio videomixer. TmkClipReaders 1108, 1109, 1110 are allocated and each is hookedinto the PullSwitch 1104. The PullSwitch 1104 switches between theTmkClipReaders 1108, 1109, 1110 to combine video and audio clips. Flowcontrol is automatic because of the way the pipeline is constructed. ThePush and Pull Switches are the same as video switches in a broadcaststudio.

The derived class and resulting objects described here may be combinedin an arbitrary way to create a number of different usefulconfigurations for storing, retrieving, switching and viewing of TVstreams. For example, if multiple input and output sections areavailable, one input is viewed while another is stored, and apicture-in-picture window generated by the second output is used topreview previously stored streams. Such configurations represent aunique and novel application of software transformations to achieve thefunctionality expected of expensive, sophisticated hardware solutionswithin a single cost-effective device.

With respect to FIG. 13, a high-level system view is shown whichimplements a VCR backup. The Output Module 1303 sends TV signals to theVCR 1307. This allows the user to record TV programs directly on tovideo tape. The invention allows the user to queue up programs from diskto be recorded on to video tape and to schedule the time that theprograms are sent to the VCR 1307. Title pages (EPG data) can be sent tothe VCR 1307 before a program is sent. Longer programs can be scaled tofit onto smaller video tapes by speeding up the play speed or droppingframes.

The VCR 1307 output can also be routed back into the Input Module 1301.In this configuration the VCR acts as a backup system for the MediaSwitch 1302. Any overflow storage or lower priority programming is sentto the VCR 1307 for later retrieval.

The Input Module 1301 can decode and pass to the remainder of the systeminformation encoded on the Vertical Blanking Interval (VBI). The OutputModule 1303 can encode into the output VBI data provided by theremainder of the system. The program logic may arrange to encodeidentifying information of various kinds into the output signal, whichwill be recorded onto tape using the VCR 1307. Playing this tape backinto the input allows the program logic to read back this identifyinginformation, such that the TV signal recorded on the tape is properlyhandled. For example, a particular program may be recorded to tape alongwith information about when it was recorded, the source network, etc.When this program is played back into the Input Module, this informationcan be used to control storage of the signal, presentation to theviewer, etc.

Such a mechanism may be used to introduce various data items to theprogram logic which are not properly conceived of as television signals.For instance, software updates or other data may be passed to thesystem. The program logic receiving this data from the television streammay impose controls on how the data is handled, such as requiringcertain authentication sequences and/or decrypting the embeddedinformation according to some previously acquired key. Such a methodworks for normal broadcast signals as well, leading to an efficientmeans of providing non-TV control information and data to the programlogic.

Additionally, although a VCR is specifically mentioned above, anymultimedia recording device (e.g., a Digital Video Disk-Random AccessMemory (DVD-RAM) recorder) is easily substituted in its place.

Other applications may be substituted for those set forth herein withoutdeparting from the spirit and scope of the present invention. Forexample, the invention can be used in the detection of gambling casinocrime. The input section of the invention is connected to the casino'svideo surveillance system. Recorded video is cached and simultaneouslyoutput to external VCRs. The user can switch to any video feed andexamine (i.e., rewind, play, slow play, fast forward, etc.) a specificsegment of the recorded video while the external VCRs are being loadedwith the real-time input video.

Referring again to FIG. 1, an embodiment of the invention provides aviewer interface that allows the viewer to access different functions ofthe system. The system's construct allows items called video loopsets tobe stored on the hard disk or storage device 105. The video loopsetsenter the system through input streams into the Input Module 101 andconverted to MPEG streams and placed onto the storage device by theMedia Switch 102. The video loopsets also enter the system in the formof MPEG streams (through a backchannel, VBI, transmission media, etc.),bypass the MPEG conversion cycle by the Input Module 101 and are writtento the storage device 105 by the Media Switch 102.

The viewer interface program logic (executed by the CPU 106) commandsthe Media Switch 102 to retrieve a video loopset from the storage device105. A video loopset is a three to four second (the length is dependentupon the amount of information displayed and can be longer) loop ofvideo is created so that the ending and beginning seamlessly mergetogether to give the effect of a continuous video stream as the systemplays the loopset from beginning to end, looping back to the beginningof the loopset each time the end is reached. As detailed above, theOutput Section 103 takes MPEG video loopset streams as input andproduces an analog TV signal according to the NTSC, PAL, or otherrequired TV standards. The Output Section's 103 OSD generator allows theprogram logic to overlay text and graphics on top of the resultinganalog TV signal.

A lower level viewpoint of the system is shown in FIG. 7. The CPU 713tells the Media Switch 701 that a specific video loopset must beretrieved from the storage device 710 and sent to the MPEG decoder 715.On screen displays are created by the CPU 713 and routed through the OSDgenerator to the digital mixer 718. The digital mixer 718 allows videoloopsets, on screen displays, and audio cues to be mixed and sent to theTV or monitor 716.

The invention's viewer interface reacts to user input through an inputdevice such as the exemplary remote control shown in FIG. 14. Withrespect to FIG. 15, the user's commands are processed through theControl Input Module 1504. The viewer interface 1503 processes the inputcommands Appropriate commands are issued (such as displaying loopsets)to the Media Control 1501. On screen displays are generated by theviewer interface 1503 and routed through the Output Module 1505 asdescribed above.

A viewer using this type of remote control 1401 presses the TiVo button1401 and the viewer interface displays a menu as shown in FIG. 16. TiVoCentral 1601 is a central location that contains a list of areas thatthe viewer can visit and is easily accessed through a single button pushon the remote control.

The viewer interface displays video loopsets in the background area ofthe screen on a TV or monitor. Here, the character 1602 in the upperleft-hand portion of the screen is a separate video loopset. Thecharacter's loopset animates the character 1602 by giving the viewer thesense that the character is alive. His antennae move and he rocks fromside to side on his feet. Each element of the screen can be a separatevideo loopset. The subdued text's 1603 loopset rotates the text in abanner-like mode from the right side of the screen to the left side. Therest of the background details are on another loopset. One loopset canbe used for the entire background display if so desired. Video loopsetsfree the CPU from having to draw continuous animations. The systemsimply plays the loopsets in the same manner as playing any other MPEGstream, thereby offloading the CPU. Additionally, video loopsets are aninexpensive method of displaying high resolution graphics.

Any temporal elements (e.g., names, icons, location indicators) aredrawn onto the screen over the video loops using the OSD. Menu itemssuch as Now Showing 1604 are drawn over the video loopset. A highlightbar 1605 is used to indicate the current menu item that can be selectedby the user.

Highlight bars can be displayed using video loopsets. The highlight bar1605 appears to be drawn onto the screen but is actually a videoloopset. Each time the user presses a button 1403 on the remote controlto move the highlight bar 1605, an appropriate video loopset is selectedfor that position.

Alternatively, the highlight bar 1605 can be drawn over the videoloopsets in the same manner as a temporal item.

Information is presented in a successive disclosure format. The usernavigates through menus by moving to the right (by pressing right sideof the button 1403 on the remote control) to obtain more information orto the left (by pressing the left side of the button 1403 on the remotecontrol) to see less information and return to the previous location.The select button 1404 selects the menu item and causes the appropriateaction to be executed.

The background colors of each set of menus remains consistent throughoutthe user's experience. For example, the background screen color for NowShowing is amber/yellow and the background screen color for NetworkShowcases is purple. The user intuitively knows what menu area he is inthrough the color cues.

Referring to FIGS. 14, 16, and 17, the invention provides “whisperingarrows” 1706, 1707, 1708, 1709 on each screen that tell the user thatmore information is available in that particular direction. These arrowspoint up 1709, down 1707, left 1708, and right 1706. A right arrow 1706indicates that there is more detailed content that the user can accessby pressing the right side of the button 1403 on the remote control1401. A left arrow 1708 indicates that a more general level of detailexists that the user can access by pressing the left side of the button1403 on the remote control 1401. Up 1709 and down 1707 arrows indicatethat the current list has more items above or below, respectively, fromthe location that the user currently has highlighted with the highlightbar 1710. If an arrow does not exist, then there is nowhere else to goin that direction.

For example, the user simply highlights the Now Showing name 1604 andpresses the right side of the button 1403 on the remote control 1401.The Now Showing screen 1701 is shown which has a list of programs 1705that are displayed to the user in descending order with the mostrecently obtained program at the top of the list. The Now Showinglisting 1705 contains a list of shows that the user requested the systemto record and also programs that the system believes are of interest tothe user. The system's list is based upon the program preferences thatthe user has expressed to the system using the thumbs up and thumbs downratings described below and are indicated with a TiVo logo 1712. Ayellow dot 1702 is a warning indicator that indicates that a program isgoing to expire and will be deleted from the hard drive in a short time(e.g., in 24 hours). A yellow dot with an exclamation point 1704indicates that a program will be deleted within a much shorter time(e.g., within the next few hours). Green dots 1703 indicate that thesystem will save the program until the user explicitly deletes it. A reddot 1713 indicates that the program is currently being saved on thestorage device.

A down arrow 1711 is displayed in the lower area of the listing 1705whenever the user has more information to scroll or page down through.An up arrow is displayed in the upper area of the listing 1705 wheneverthere is more information to scroll or page up through. The user pressesup or down on the button 1403 on the remote control 1401 to scroll up ordown, respectively, through the listing. The channel button 1410 ispressed up or down to page up or down, respectively, through thelisting.

When the user presses on the right side of the button 1403 on the remotecontrol 1401, a more detailed program information screen is displayed tothe user. Referring to FIG. 18, this screen supplies the user with moreinformation related to the particular program. The user can choose tolet the program be deleted automatically by taking no action 1805, viewit immediately 1801, delete it immediately 1803, ask the invention tosave the program longer 1802, or save until deleted by the user 1802. Ifthe user asks the invention to save the program longer, then the yellowor yellow dot with an exclamation point will disappear. The user canalso save a program to an external VCR for archiving 1805. The inventionconsistently displays the highlight bar 1806, whispering arrows 1810,1811, 1812, and video loopsets 1807. A text description of the program1809 is displayed.

A down arrow 1813 is shown in the lower portion of the screen toindicate that the user can press down on the channel button 1410 on theremote control 1401 to see a detailed program information screen for thenext program on the Now Showing list. An up arrow displayed in the upperportion of the screen area indicates that the program list hasadditional programs in that direction. This functionality allows theuser to obtain the same information shown in the Now Showing listing1705 in a more detailed format.

With respect to FIGS. 7, 15, and 18, the invention provides a bookmarkfunction that allows the user to bookmark a program where he left off.The CPU 713 records the frame of the program where the user stopped orthe user commands the system to place a bookmark The Media Switch 701updates the CPU 713 on the status of the video stream. For example, auser can watch the first half-hour of a two-hour program stored in thestorage device 710 and then bookmark the program where he left off or hecan place bookmarks within the program to mark points of interest.Alternatively, the invention automatically bookmarks the program for theuser if the user exits viewing the program by going to live TV or to themenu mode. The invention places an indicator 1708 on the screen,indicating that a bookmark has been saved.

The user can, at any time, access any of his bookmarks and continueviewing the program from the bookmark When a program is deleted from thestorage device 710, the associated bookmark(s) is also deleted. The usercan also select and delete a specific bookmark or all bookmarks for aprogram. Once the program is playing, the user can jump to a bookmarkusing the jump button 1414 on the remote control 1401 and press theselect button 1406 to remove the bookmark A bookmark is placed in thesame manner by pressing the select button 1406 to create a bookmark.

Bookmarks within a single program can be set for different users. Remotecontrols are encoded for a specific user in a household. This allowseach person in the household to have a personal remote control. Theadvantage to having individual remote controls is that parentalcontrols, personal preferences, and bookmarks are automaticallyactivated when each remote control is used. The CPU 713 notes that abookmark belongs to a certain encoded remote control. Each set of dataare stored on the storage device 710.

The remote control identifies itself to the system via a coded chiponboard the remote control. The Control Input Module 1504 receives theremote control's command signals. The viewer interface 1503 processesthe remote control's identification and checks the preferences on thestorage device 1502 for any associated preference files. The viewerinterface 1503 then uses the associated preference file (or defaultpreference file if no match was found) bookmark information for theuser. Any bookmarks that do not have associated programs stored on thestorage device 1502 are ignored and deleted. The viewer interface 1503commands the Media Control 1501 to display programs with start framescorresponding to the preference file bookmarks, if they exist.

The encoded remote control can also be used for parental controls.Specific remote control(s) can be set up so that different levels ofparental controls are engaged for each remote control. Children, forexample, will have their own personal remote controls that are set up tonot allow them to watch any shows with greater than a G-rating.

Although remote controls are mentioned as a method of accessingindividual user preference files, other methods such as manual selectioncan be used.

Multiple bookmarks for a program are transparent to the user because theremote control that the user uses tells the system to only display andactivate that particular user's bookmarks. A user can also see otherusers' bookmarks if so desired.

The invention's bookmarks can be applied to any video or audioapplication where the physical position in the material is readilyascertainable e.g., DVDs, VCRs, MP3s, etc.

Users can indicate their preferences for a certain program. A user canrate a particular program with one, two, or three thumbs up, indicatingthe degree that he likes the program. One, two, or three thumbs down areused to indicate the degree that the user dislikes the program. Thedegree that the user likes or dislikes the program increases as thenumber of thumbs up or down increases (i.e., two thumbs up indicates astronger preference than one thumbs up).

The user can rate a program while he is watching it or viewing theprogram's information. The accumulation of program ratings allows thesystem to save related programs onto the system storage device. Thisinfluences the performance of the underlying system as described in U.S.Pat. No. 6,233,389, owned by the Applicant.

Referring to FIGS. 19, 20 a, 20 b, and 20 c the invention displays thethumbs rating (if it exists) 1901 for a particular program to the userwhenever an episode of the program is viewed or the user looks at theprogram information 1908. A banner 2001 is displayed in the upper regionof the screen whenever the user changes channels, transitions to liveTV, or commands the banner to be displayed.

The user can rotate through three different levels of banners, eachsuccessively containing more information about the program. The lowestlevel banner 2001 contains minimal information such as channel 2002,station ID 2003, and time 2004. The second level banner 2005 displays,in addition to the information in the minimal banner 2001, informationsuch as program title 2006, duration 2007, program MPAA or TV rating2008, and thumbs rating. The final level banner 2009 adds program textdescription 2010 to the second level banner 2005. The program textdescription 2010 is semi-transparent, allowing the user to watch theprogress of the program while reading the text.

With respect to FIG. 21, programs that the user has indicated apreference for and other programs that the system believes that the useris interested in (through a user profile) are displayed 2102 in theTiVo's Suggestions area 2101.

The user can tell the system to record one instance of a program, thenext x number of showings, record all occurrences of a program for a settime period, or get a season pass for a program. A season pass tells thesystem that the user wants to record each airing of a certain programfor the entire season. The system notes, for example, that the programis shown every Monday at 8:00 PM and saves the program on the storagedevice every Monday at 8:00 PM until the end of the season. A seasonpass will only be offered to the user if the program is episodic innature.

At anytime during the viewing of live television, the user is able totell the system to save the program in progress, record the program thenext time, if any, it is shown, or get a season pass for the program. Ifthe user is watching a show and tells the system to record the programin progress, then the system will record the program from that point onand will add onto the saved recording (pre-pending) the portion of theprogram that has already passed and has been buffered. The user'schoices will appear in his profile so he can edit it later.

Referring to FIGS. 22 and 23, a Showcase area 2201 contains programlistings that certain television or cable networks are promoting 2202.These are programs that the networks are currently promoting from theirlineups. The user can, for example, move the highlight bar to the rightand look at the network listings. The user can choose NBC 2203 byhighlighting that particular line and moving the highlight bar 2204 tothe right. The list of program categories for NBC will appear on thenext screen 2301. The user can then move the highlight bar 2303 tohighlight a program category and then move the highlight bar 2303 to theright to see the program listings on the next screen.

Referring again to FIG. 19, a screen displaying the information for aprogram is shown. The user is given the thumbs rating if it exists 1901along with a program description and channel information. The user ispresented with a list of options such as: watch now 1902; record theepisode 1903; get a season pass 1904; view upcoming showings 1905;cancel the particular recording 1906; and view theme 1907 (whichdisplays other shows in the same theme area).

With respect to FIG. 24, TiVo's To Do List 2401 contains a listing ofthe programs 2402 that the system is going to store on the system harddisk. A list of days beginning from the current day is displayed. Eachday has a corresponding list of programs that the system will store onthe system hard disk. The user can select the day that he wants to queryby highlighting the particular day and moving the highlight bar to theright. A list of programs that the system will record on that particularday is displayed. Alternatively, the invention will display the entirelist of programs 2402 with the day 2404 that the program will berecorded listed in line with the program name 2407.

A checkmark next to a program name indicates that the user has requestedthe system to record the program. Two checkmarks 2403 mean that theprogram 2407 is part of a season pass. The user can check or uncheck anyprogram on the list. The programs that are check-marked have a higherpriority to be stored on the system hard disk than the uncheckedprograms.

If the user attempts to checkmark too many programs, the invention willnotify the user that there will be insufficient room on the system harddisk. The user is told what programs should be freed up from theprograms that are currently or planned to be saved on the system harddisk in order to save the desired program. The user can accept thesystem's recommendations or he can obtain a listing of what programs arecurrently stored and scheduled to be stored on the storage device andcan choose to remove the unwanted programs from the storage device. Theuser selects the unwanted programs by placing an “X” next to theprogram's name or he can let the system select the programs that will beremoved.

Referring to FIG. 25, any program schedule conflicts are displayed 2501to the viewer immediately whenever a conflict arises. Such conflicts canbe caused, for example, by the viewer selecting two programs to be savedthat are shown at the same time or have overlapping times when only onetuner is available.

Referring again to FIG. 14, the viewer can also use the thumbs up 1405and thumbs down 1404 buttons on the remote control 1401 to tell thesystem what actors or types of shows he does or does not prefer. Forexample, the viewer can select actors from a list and place one, two, orthree thumbs up or down next to a particular actor's name. The viewercan access his favorite actor list and add or delete actors from thelist. Favorite directors are designated in the same way as favoriteactors. The system adjusts to the viewer's preferences and suggestsprograms with the actors, directors, and types of shows that the userprefers.

With respect to FIGS. 7 and 26, as the user watches a program, a trickplay bar 2601 is overlaid onto the live video. The CPU 713 uses the OSDgenerator to display the trick play bar 2601 and its associatedcomponents through the digital mixer 718 to the TV or monitor. The trickplay bar 2601 visually informs the user of the size of the circularprogram cache is and, if the cache is not at capacity, how much of thecache is filled. The CPU 713 is informed by the Media Switch 701 of theframe that is being displayed and the cache status.

The current program is stored in a circular cache as described above.The green cache bar 2602 inside of the trick play bar 2601 indicates howmuch of the circular cache is filled. Time marks 2603, 2604 aredisplayed inside the trick play bar 2601 giving the user a visualreference point from which to judge the current time and how far back intime the cache has recorded. The time marks 2603, 2604 can be anyincrement of time needed, but usually are in half hour or 15 minuteincrements. Every half hour (or selected increment), the cache bar 2602slides to the left. The current time is always between the timeindicated at right hand side 2610 of the trick play bar 2601 minus thetime increment of the middle time mark 2604 when watching livetelevision. The entire length of the trick play bar 2601 is calculatedby subtracting the time indicated on the left hand side 2609 of thetrick play bar 2601 from the time indicated on the right hand side 2610of the trick play bar 2601.

A slider 2605 moves along the trick play bar 2601 and on top of thecache bar 2602. The slider 2605 along with the position indicator 2608are linked together and tell the user visually where his currentposition is within the program material. The slider displays the timemark 2605 of the position. A mode indicator 2606 is positioned below theslider 2605 and follows the slider's 2605 movement. The mode indicator2606 displays whether the user is in play, record, pause, slow play,fast play, fast forward (1x, 2x, and 3x), slow reverse play, slowreverse, and fast reverse (1x, 2x, and 3x) modes. The 1x, 2x, and 3xspeeds are adjustable by the system to be any variable desired (e.g.,2x, 16x, and 32x).

The cache bar 2602 expands, when the cache has not been filled, to theright as more of the program is stored in the circular cache. If thecache is filled, the cache bar 2602 simply shifts to the right. When thecache bar 2602 reaches the end of the right side of the trick play bar2601, it will shift to the left side of the trick play bar 2601 so theright hand end of the cache bar 2602 is positioned in the trick play bar2601 at the time mark 2604. The slider 2605 and position indicator 2608within the trick play bar 2601 will also shift in unison with the cachebar 2602, reflecting the current position in the cache. The time displayat the right hand side 2607 of the trick play bar 2601 will be one halfhour from the time mark 2604 at the middle of the trick play bar 2601(when half hour increments are used).

The left half of the trick play bar 2601 can also display a compressedtime scale. The compressed time scale is used when a large circularcache is used. Sometimes it is not desirable to have the right half ofthe trick play bar 2601 indicating a time span larger than a half anhour because the cache bar 2602 shifts to the left when it reaches theend of the right side and can be confusing to the user.

The slider 2605 can be moved anywhere within the cache bar 2602 by theuser. The user uses the play 1411, rewind 1407, fast forward 1408, pause1412, slow motion 1413, jump 1414, and instant replay 1415 buttons toposition the slider 2605. The jump button 1414 positions the slider 2605at the end of the cache bar 2602. While the instant replay button 1415causes the slider 2605 to reposition ten seconds (the time span issystem adjustable) backwards into the cache bar 2602, thereby allowingthe user to view a portion of the program in the same manner as aninstant replay operates in football broadcasts.

When the user watches a program that has been recorded, the trick playbar time indicator on the right hand side 2610 represents the total timeof the program recording. The cache bar 2602 fills the entire trick playbar 2601 indicating that the program is stored entirely on the system.If a partial program is stored, then the cache bar 2602 displays thelength of the program saved by the system. For example, if the userrecords a program after it has already started and the system does nothave the beginning of the program stored in the cache, then the cachebar 2602 will show that the program starts a certain amount of timeafter the beginning of the program. The same type of behavior occurswhen a program being recorded has prematurely ended. The cache bar 2602will end at the point where the recording stopped. The slider 2605displays the amount of time (e.g., one hour) in the program that theuser is at. The mode indicator 2606 operates as described above andbelow.

Referring to FIG. 27, the components around the trick play bar areshown. The trick play bar is shown by itself 2701 and with the cache bar2702, slider 2703, and a half-hour timing mark 2704. The mode indicatorcan indicate that a recording is in progress 2704. A unique aspect ofthe invention is that the user can move around the program material thathas been recorded while the actual recording is taking place. The slider2703 can be moved to any point in the cache bar 2702. The cache bar 2702indicates the progress of the recording. The mode indicator 2705 willdisplay any combination of record 2706 and play 2707, rewind (threespeeds) 2708, 2709, 2710, fast forward (three speeds) 2711, 2712, 2713,pause 2714, and slow motion 2715. Examples of record combined with 2xfast forward 2716 and 3x fast forward 2717 are shown.

The trick play bar and its associated components are drawn over theprogram content for a short duration. The trick play bar appearswhenever the user activates any of the trick play features i.e., record,play, rewind, fast forward, pause, and slow motion. If the mode iseither play or record, then the trick play bar and its associatedcomponents will remain on the screen for a short time period. Thisremoves any obstructions from the program material displayed on thescreen and is for the convenience of the viewer. This time period isadjustable by the system. The trick play bar and its associatedcomponents may be displayed indefinitely if in an editing mode or adedicated trick play display is used.

Additionally, index or bookmark indicators are displayed over the trickplay bar. These marks appear as, for example, a vertical bar that iscolored, flagged, or labeled uniquely giving the user visual cues thatan index or bookmark exists in that position. The user can sequentiallyjump to each index or bookmark indicator by pressing the jump button1414 on the remote control 1401. Indexes and bookmarks are easily placedor removed by the user as noted above.

The invention's trick play bar can be applied to any video or audioapplication where the physical position in the material is readilyascertainable e.g., DVDs, VCRs, MP3s, etc.

Another unique aspect of the invention is that the user can watch apre-recorded program stored on the storage device while the system isrecording another program and storing it on the storage device. Thissimultaneous operation is a natural feature of the architecture of theinvention. The number of programs being recorded and stored on thestorage device is extended to the number of tuners or sources availablein the system.

Referring again to FIGS. 14 and 15, the invention predicts the position(overshoot correction) in the program material where the user expects tobe when the user stops the fast forward or reverse modes. The usercommands from the remote control 1401 are received by the Control InputModule 1504. The user initially places the operational mode into fastforward or reverse by pressing the fast forward button 1408 or thereverse button 1407. The viewer interface 1503 tells the Media Control1501 to fast forward or reverse the program material. Each successivepress of the fast forward 1408 or reverse 1407 buttons places the systeminto the 1x, 2x, or 3x fast forward or reverse modes, respectively. Whenthe user wants to stop the fast forward or reverse progression, hesimply presses any other media control button, however the play button1411 is most commonly used.

The viewer interface 1503 receives the command from the Control InputModule 1504 and tells the Media Control 1501 to stop. The Media Control1501 sends the viewer interface 1503 the frame position where theprogram material was stopped. The viewer interface then tells the MediaControl 1501 to transition to the mode the user selected and passes theMedia Control 1501 the frame to start the mode from. This frame startposition is the present frame with an overshoot correction factor addedor subtracted from it.

The invention adapts to the user by remembering how much the usercorrects (i.e., reverses or fast forwards) after he stops the fastforward or reverse mode (in each speed). Correction factors arecalculated by taking the user's corrections and setting the factors tothe average, median, or any other method desired, for each speed. Thesystem will adjust the correction factors if it observes that the usercontinues to make corrections.

The invention also uses a prediction method to correctly place the userwithin the program upon transition out of either mode. The predictionmethod determines if the user is in 1x, 2x, or 3x fast forward orreverse modes and then automatically subtracts or adds, respectively, atime multiple (depending upon the actual speed used for 1x, 2x, or 3x)to the frame where the transition was detected and positions the user atthe correct frame. The system fine tunes the time multiple if it seesthat the user is consistently correcting after the fast forward orrewind mode stops.

Another method initially tests the user's reaction time using a testvideo. It asks the user to press the fast forward 1408 or reverse 1407button during the test video and then asks the user to position thevideo to the place that he expected the system to have been. This timespan is then used whenever the user uses the fast forward or reversemodes and is adjusted with a multiple for each speed.

A final method allows the user to simply set a sensitivity setting thatthe system will use as a correction factor. The invention will subtractor add a multiple of the factor to the release frame whenever the useruses the fast forward or reverse modes, respectively.

The invention's overshoot correction can be applied to any video oraudio application where the physical position in the material is readilyascertainable e.g., DVDs, VCRs, MP3s, etc.

With respect to FIGS. 7, 14, 28, 29, 30, and 31 the invention displays aprogram guide area 2801 to the user which is a list of the programs thatare currently airing, was aired, or is scheduled on live TV. Programguide information is stored on the storage device 710. The CPU 713parses the program guide information and creates program scheduleinformation.

The program guide area 2801 is semi-transparent and overlays on theactual broadcast program 2802 that the user is currently watching. Theuser can see how the program 2802 is progressing while he is browsingthe program guide schedules 2803, thereby allowing the user toimmediately switch back to the program 2802. For example, the userswitches to browsing the program guide 2803 while a commercial break hasoccurred during the current program. The user sees when the commercialbreak ends and immediately switches back to the program 2802.

A simple touch of the Live TV Guide button 1409 on the remote control1401 brings up a central program guide area 2801 where the usernavigates through the program schedule information. The program guidearea 2803 presents what is on live TV now, what is on all channels, andwhat is on a particular channel that is coming up. The inventiondisplays the program guide information in two different modes: twocolumn or three column. Generally, only two columns are shown on thescreen at a time to declutter the display and present the information tothe user in a friendlier format. The information is not presented in thetraditional channel/time grid format.

The two column mode 2803 displays the available channels in a rotatingendless list fashion in the left hand column 2804 and the programs forthe highlighted channel in the right hand column 2805. The user scrollsor pages up or down through the channel list by pressing the button 1403up or down, or the channel button 1410 up or down, respectively. Theinterface is consistent throughout all columns with respect to scrollingand paging. Whispering arrows are also consistent in this interface,showing that more information exists in the indicated direction.Information is also more detailed as the highlight bar is moved to theright (successive disclosure) as described above.

The current time period 2807 is shown above the left column 2804 on thescreen. The time period 2807 is easily changed by the user. The userchanges the time period 2807 through a single press of the back 1407 orforward 1408 button on the remote control 1401, moving the time period2807 backward or forward, respectively. Below the time display is thelisting of the channels 2804 available to the user. Next to each channelnumber 2809 is the station ID 2810 and the title 2811 of the currentprogram that is being aired. The user moves the highlight bar 2812 overthe channel that he is interested in and a description 2806, 2808 of thecurrent program that is showing on the channel 2809 is displayed. Anembodiment of the invention places the description area 2806 above thetwo columns. As the user changes the time period 2807, the programtitles 2811 change to the names of the program that were, are, or willbe shown at that time period 2807. The programs in the right hand column2805 will also change to correspond to the time period 2807.

Program information for the program currently showing on the highlightedchannel is displayed in the upper area 2806, 2808 of the program guidearea 2810. All of the data that the user needs to know about the programthat is currently selected is displayed in the upper area 2806, 2808.This information includes: the program title; episode title; programdescription; the actors or actresses appearing in the program; anyadvisories; audio parameters; the genre that the program is in; startand stop times; the program's MPAA or TV rating; the logo of the networkthat the program is being broadcast on; the current time; if the programis selected to be recorded; if it has been selected as a season pass; ifthe user has expressed a thumbs up or down rating.

The user moves the highlight bar to the right hand column 2805 bypressing the right side of the button 1403 on the remote control 1401allowing him to scroll through the programs 2805 for that particularchannel. As each program is highlighted, the program's information (asdescribed above) is displayed in the upper area 2806, 2808 of theprogram guide area 2801.

The right hand column 2805 displays a schedule of the programs for theparticular channel. The schedule begins at the time 2807 indicated abovethe left column 2804. The program name 2814 and start time 2813 aredisplayed. For example, channel 2 is highlighted and the right handcolumn shows all of the programs showing from the current or selectedtime. The user can move the highlight bar up and down the list ofprograms 2805, scrolling through the time slots for each day in theprogram guide information. As described above, a page up or page downfunction is also easily accessed by the user. This saves the user theeffort of having to scroll through the program list in either column.

The channel number and ID 2815 are displayed above the right hand column2805. The user changes the channel number 2815 through a single press ofthe back 1407 or forward 1408 button on the remote control 1401, movingthe channel number 2815 backward or forward, respectively, through thechannel list. The channel list in the left hand column 2804 follows theuser's channel selections, scrolling backward or forward in the channellist. The program list in the right hand column 2805 changes to theprograms associated with the channel number 2815 selected by the user,starting at the time indicated 2807 above the left hand column 2804.

The program list in the right hand column 2805 can be shown in twointuitive forms. The first form 3201 lists the start time 3202 of eachprogram next to the program name 3203. The list 3204 is in descendingorder from the most recent time to the latest time.

The second form 3301 also lists the start time 3302 next to each of theprogram names 3303. The list 3304 continues the time intervals 3302 bylisting each half, quarter hour, or selectable intervals. The durationof the program is indicated by an arrow 3305 extending from the programstart time 3302 down to the program end time 3306. This gives the user avisual cue as to the duration of the program time slot.

The user can highlight a program and again move the highlight bar to theright to obtain a screen such as the one shown in FIG. 18. The user isgiven choices to watch the program now (if the program is currentlyairing) 1802, record the episode 1803, get a season pass 1804, view alist of the upcoming showings of the program 1805, cancel the recording(if the program is being recorded or is scheduled to be recorded) 1806,or view programs in that theme area 1807.

The three column mode adds a higher level column to the two-column mode.This means that, conceptually, an additional column is added to the leftof the channel column, although visually, only two columns are displayedat a time. Larger screens and higher resolutions will allow all threecolumns to be displayed at once. The program guide information is sortedin different ways, e.g., all movies 2901, favorite channels 3001, allchannels 3101, all sports, etc. The first column 3103 contains thesorting methods available to the user. The second column 3104 presentsthe available channels that correspond to the sorting method with thedescription of the channel column consistent with that of the two-columnmethod. The user simply highlights the preferred sorting method with thehighlight bar 3102. The sorted channels then appear in the right handcolumn 3104.

The user can then move the highlight bar to the right hand column 3104by pressing the right side of the button 1403 on the remote control 1401allowing him to scroll through the channels 3104. The programinformation for the highlighted channel is displayed in the upper screenarea of the program guide area as described above. The user can onceagain move the highlight bar to the right to obtain the two columnchannel/program format described above. This two column format maydiffer (when a sort method other than all channels is selected) in thatthe channels displayed in the left hand column are those that correspondto the sorting method.

The user presses the Live TV Guide button 1409 again to remove theprogram guide area 2801 from the screen and to return to the programviewing mode.

The invention generates transitional sounds through the digital mixer718, as described above, whenever the user moves the highlight bar toanother area. Warning sounds occur when the user attempts an action thatis not allowed, e.g., when the user tries to move the highlight bar toan area that does not exist, i.e., where a whispering arrow is notdisplayed. These sounds can be turned on or off by the user.

Referring again to FIG. 15, a plurality of user preferences can bestored on the storage device 1502. The user preferences can encompassuser interface preferences (e.g., background colors, display font size,etc.), viewing preferences and patterns, which of the programs that arestored on the local storage device have been recorded by the user,playlists, etc. The user preferences are recorded as the user operatesthe system. Some aspects of the user preferences are passive and aredetermined by the system while others are specifically set by the user.

The Control Input Module 1504 receives the remote control's commandsignals when the user uses the remote control. The user identificationprocess can occur in many ways. For example, the remote control sends anidentifier message to the system via the Control Input Module 1504whenever the user presses a button on the remote control. The messagecan be a small ID message or a simple binary message header. This allowsthe Control Input Module 1504 to be immediately informed of the user'sidentity. If another user uses another remote control, then the systemcan immediately identify the user change.

Another example for the remote control to identify the user to thesystem is not as up to date. The user can press a button on the remotecontrol that sends an identification message to the Control Input Module1504. This puts the responsibility on the user to perform theidentification process. Yet another example allows the system to pollthe remote control for an identification message whenever the remote isused.

The remote control can be uniquely encoded by the user or at the factoryby storing a unique identifier in the remote control. For simplicity,the remote control's user ID code can be unique within the user'shousehold. This cuts down on the number of unique IDs required.

The viewer interface 1503 processes the remote control's identificationand checks the preferences on the storage device 1502 for any associatedpreference files. The viewer interface 1503 then uses the associatedpreference file (or default preference file if no match was found) forthe user. For example, if the viewer interface 1503 finds that the usershave just changed, the viewer interface 1503 can reconfigure thedisplayed Now Showing screen as shown in FIG. 17 to display the newuser's recorded shows and can adjust display font sizes and backgroundcolors to the user's preferences. This allows the system to adapt tochildren, for example, and present a simple interface that a youngerchild can respond to and be entertained.

The remote control can also identify the user to the system using othermethods. Referring to FIG. 35, a user can have an associated tag 3401,e.g. an RFID tag that can be attached to a key ring, necklace, watch, inhis wallet, or even a sub-dermal tag inserted somewhere in the user'sbody. The remote control 3402 detects the tag via radio signals in alimited radius so the remote control does not get confused by signalsemanating from other users' tags.

The remote control 3402 notifies the Control Input Module 1504 on themultimedia device 3403 of the user's identity.

As noted above, all aspects of the user's experience can be tailored tothe preferences of that user. For example, multimedia content such asbroadcast or recorded television programs, music play lists, and thelike could be sorted, displayed, or restricted, depending on the useridentifier. User preferences such as parental controls, channel lineups,programmable button functions such as radio station preset buttons, evenroom lighting could all be customized. Certain users can have access tosystem setup information (administrative privilege) while others may berestricted.

Users could be members of groups within a household and share attributesof their preferences. The viewer interface 1503 can allow a user toexchange GUI preferences, for example, so that other users can use hiscustomized user interface and graphics.

An embodiment of the invention allows the Control Input Module 1504 onthe multimedia device 3403 to directly read the user's tag 3401. TheControl Input Module 1504 sends the information transmitted from theuser's tag 3401 to the viewer interface 1503. The viewer interface 1503processes the information to determine the user's identity and checksthe preferences on the storage device 1502 for any associated preferencefiles as described above.

Another embodiment of the invention uses a photo player or a musicplayer as the multimedia device 3403. The multimedia device 3403 detectsthe user's tag 3401 and reads the user's ID from the tag. The multimediadevice 3403 finds the user's ID in a list of users and determines thatthe user has a preference for a certain type of photos or music. Themultimedia device 3403 then displays the photos or plays the music thatfall into the type that the user prefers.

This embodiment works in a home, for example, where one user prefersclassical music and another prefers rock and roll. When one user walksinto the room where the multimedia device 3403 resides, the multimediadevice 3403 switches to the type of music that the user prefers. Whenboth users are in the room, the multimedia device acts as describedbelow, finding a common ground between the two users. this embodimentalso works for electronic photo displays where the multimedia device3403 displays a different style of photos or selection of photos foreach user.

Yet another embodiment of the invention allows the Control Input Module1504 on the multimedia device 3403 to directly read a plurality ofusers' tags. This situation occurs when a family is sitting in the sameroom using the multimedia device 3403. The Control Input Module 1504reads all of the user tags within its range and sends the identificationinformation that it extracts from the tag signals to the viewerinterface 1503. The viewer interface 1503 can correlate all of theusers' preferences and determine if any intersections exist. The viewerinterface 1503 can then display any intersections in program material,e.g., displaying any recorded television shows that all of the users mayenjoy. This would allow the system to not display a list of “R” ratedmovies when there are underage children present, for example

A more powerful method of identifying the user is to have a memorydevice in the tag 3401. The tag can then store the user's preferencesfor a plurality of devices, e.g., a DVR, a car radio, the car's climatecontrol settings, an MP3 player, a photo display device, etc. The user'stag 3401 can be queried by any device that he is near, such as his caror the remote control 3402. The remote control 3402, for example, cantransmit the user's preferences to the Control Input Module 1504 on themultimedia device 3403. This allows the user to use any multimediadevice 3403, a DVR for example, that accepts his preferences. Themultimedia device 3403 does not have to constantly store the user'spreferences to customize his user experience.

This allows the user to go to a hotel, for example, and have the hotel'sDVR customize itself to the user. The hotel's DVR can retrieve theuser's preferences from his tag 3401 and customize the DVR's recordings,channels, and UI to the user. This also allows the DVR to target adsstored on the DVR to the user. The DVR can display ads targeted to theuser's demographics in a program guide or during a program that the useris watching. The DVR can insert customized commercials that it hasdetermined the user will watch into a TV show that the user is viewing.For example, the commercials can be for local businesses that cater tothe user's age and gender or for a car manufacturer that wants to targetthe users age and gender.

The DVR service provider can charge a fee to the advertisers for thenumber of ads that the user views or simply for the use of the user'sinformation. The DVR service can also charge a hotel for the use of theuser's information. The hotel can charge a fee to local advertisers fordisplaying their commercials to the user.

FIG. 35 shows a tag characterized as a mobile data device 3501 that canbe independently queried by a multimedia device 3502. The mobile datadevice 3501 can be a PDA or a laptop, for example The mobile data device3501 can carry a large amount of data that can be queried by themultimedia device 3502. The multimedia device 3502 can be synched withthe mobile data device 3501. This allows a multimedia device 3502 toprovide a very detailed customized experience for the user. The mobiledata device 3501 could carry the user's favorite MP3′s which could betemporarily synched to the multimedia device 3502. The mobile datadevice 3501 can store the user's recently recorded programs from hishome DVR which can be transferred to the multimedia device 3502 upon asynch session. The mobile data device 3501 can be used in the samemanner as the tags described above.

Although RFID tags are mentioned above, other methods of identifying theuser may be used, e.g., computer vision recognition, biometricidentification (fingerprint, retinal, IR patterns, etc.), voiceanalysis, etc.

An embodiment of the invention allows the user to customize his userexperience at remote locations via a service. FIG. 36 shows a DVRservice example The user makes an online reservation with a hotel for aspecified period of time. The user can simply check a box during hisreservation session that indicates that he is a subscriber to a DVRservice 3602. The hotel's server 3603 contacts the DVR service 3602 forthe user's viewing preferences via a network 3605, such as the Internet.The hotel can have a privacy agreement with the DVR service thatprotects the user's information.

The DVR service 3602 can contact the user's home DVR 3601 for the user'sviewing preferences. The DVR service 3602 receives the user's viewingpreferences from the user's home DVR 3601 and forwards the user'spreferences to the hotel server 3603. The DVR service 3602 deletes anylocal storage of the user's preferences. This allows the DVR service3602 to preserve the user's privacy.

The DVR service 3602 can also have the user's viewing preferencesalready stored locally. In that case, the DVR service 3602 sends theuser's viewing preferences to the hotel server 3603.

The hotel server 3603 uses the user's viewing preferences to recordprograms that the user had scheduled his home DVR 3601 to record duringthe period of his stay at the hotel. The hotel server 3603 can use theuser's viewing preferences to record shows within a few days before theuser is to arrive just in case the user has not watched the shows on hishome DVR 3601. The user could also specify the number of days orspecific shows that he wants recorded before he arrives.

When the user arrives at the hotel, the hotel server 3603 makes theprograms that it has recorded available to the user via a DVR 3604 inthe user's room. The advantage to having the hotel server 3603 performthe recordings is that it is typically a hotel's practice to assign aroom to the user at the time the user checks into the hotel. Therefore,the user's room can be unpredictable. The hotel server 3603 can allowonly the DVR 3604 in the user's room to access the programs recorded forthe user. Alternatively, the DVR 3604 can transfer the programs recordedfor the user directly to its local storage and have them ready for theuser to view. The hotel server 3603 can delete the user's viewingpreferences when the user ends his stay at the hotel.

If the user has changed any of his viewing preferences while interactingwith the DVR 3604 in his hotel room, he can command the hotel server3603 to send an update to the DVR service 3602. When the DVR service3602 receives the user's update viewing preferences it can update itslocally stored copy of the user's viewing preferences, if it has them.The DVR service 3602 can send the user's viewing preferences changes tothe user's home DVR 3601. The user's home DVR 3601 updates its copy ofthe user's viewing preferences based on the information received fro theDVR service 3602.

For example, the user may have viewed a program that was recorded by thehotel server 3603 and was also recorded by his home DVR 3601. The usermay want to have the program deleted from his home DVR 3601 since he hasalready viewed the program at the hotel DVR 3604. The user can instructthe hotel server 3603 to update his viewing preferences and the hotelserver 3603 notifies the DVR service 3602. The DVR service sends theuser's home DVR 3601 the viewing preference update and the user's homeDVR 3601 then deletes the program from its recorded programs.

An embodiment of the invention allows the hotel server 3603 to obtain aprogram list from the DVR service 3602. The DVR service 3602 derives theprogram list based on the user's viewing preferences when the hotelservice 3603 requests a program list for the user. The DVR service 3602sends the program list to the hotel server 3603. The hotel server 3603then records programs from the program list to make programs availableto the user when he arrives. This approach allows the DVR service 3602to preserve the user's privacy by retaining the user's viewingpreferences and only making a program list available to the hotel server3603. The information from the program list itself does not allow anoutsider to derive a user's viewing preferences.

Yet another embodiment of the invention allows the hotel server 3603 toprovide a list of programs that it has stored locally to the DVR service3602. The DVR server 3602 evaluates the list of programs and creates asub-list of programs from the list of programs that the DVR service 3602believes the user would like to view based on the user's viewingpreferences. The DVR service 3602 sends the sub-list to the hotel server3603. When the user checks into the hotel, the hotel server 3603 makesthe sub-list of programs available to the user via the DVR 3604 in theuser's room.

An embodiment of the invention allows the hotel server 3603 to aggregateall of its guests' scheduled recordings. The hotel server 3603 can usethe aggregated recording schedule to record one copy of a show that mayhave been scheduled by several guests. The single recording can beaccessed by the DVRs in those guests' rooms. Further, the hotel server3603 can examine the user's viewing preferences and select from theprograms that it has already recorded any programs that the it findsthat the user may like to view. The hotel server 3603 can use the typesof programs that the user prefers to make the correlation between theprograms that it has already recorded and what it believes the userwould like to view. The hotel server 3603 can also use other parametersof the user's viewing preferences to select programs.

The DVR 3604 in the user's hotel room also customizes its user interfaceusing the user's viewing preferences. The user has a viewing experiencethat can be identical to the user's viewing experience at his home DVR3601. This can differ if the hotel wants to implement customizedcommercials, for example

The DVR service 3602 can also retrieve any recorded programs from theuser's home DVR 3601 that the user has indicated that he wants to viewat the hotel's DVR 3604. The DVR service forwards the retrieved programsto the hotel server 3603. The hotel server 3603 allows the DVR 3604 inthe user's room to access the retrieved programs.

An embodiment of the invention allows the hotel server 3603 to transferprograms to a DVR's local storage across a local network to reduce theload on the hotel server 3603.

The DVR service 3602 can charge the hotel a fee for the use of the DVRservice's personalization service.

Although a DVR service is described above, any service basis may beused.

Although a hotel server and DVR are described above, the invention canbe applied to other multimedia devices and scenarios such as MP3players, set top boxes, televisions, temperature preferences for a room,lighting preferences for a room, fast food preferences displayed on adevice at a fast food vendor, etc. Further, a multimedia device maycontact a service directly.

Although the invention is described herein with reference to thepreferred embodiment, one skilled in the art will readily appreciatethat other applications may be substituted for those set forth hereinwithout departing from the spirit and scope of the present invention.Accordingly, the invention should only be limited by the Claims includedbelow.

1-21. (canceled)
 22. A method for providing parental control accessprivilege on multimedia devices, comprising: receiving, by a multimediadevice, an identifier identifying a command from a remote control,wherein the identifier comprises user preference information;associating, by the multimedia device, the user preference informationwith a particular user of a plurality of users of the multimedia device;determining, by the multimedia device, whether the user preferenceinformation for the particular user provides access privilege for thecommand; and responsive to the determination that the user preferenceinformation for the particular user provides access privilege for thecommand, performing, by the multimedia device, the command for theparticular user.
 23. The method of claim 22, wherein the multimediadevice configures its operations to the user based on the userpreference information stored at the multimedia device that areassociated with the identifier identifying the remote control.
 24. Themethod of claim 22, wherein the multimedia device displays multimediacontent based on the user's preferences stored on the multimedia device.25. The method of claim 22, wherein the access privilege for the commandcomprises parental controls.
 26. The method of claim 22, wherein theuser preference information comprises at least one of: parental controlconfigurations, channel lineups, programmable button functions,graphical user interface preferences, and room lighting.
 27. The methodof claim 22, wherein the access privilege for the command comprisesadministrative privilege.
 28. An apparatus for a multimediapersonalization system for providing parental control access privilegeon multimedia devices, comprising: a subsystem, at a multimedia device,that receives an identifier identifying a command from a remote control,wherein the identifier comprises user preference information; asubsystem, at a multimedia device, that associates the user preferenceinformation with a particular user of a plurality of users of themultimedia device; a subsystem, at a multimedia device, that determineswhether the user preference information for the particular user providesaccess privilege for the command; and a subsystem, at a multimediadevice, that responsive to the determination that the user preferenceinformation for the particular user provides access privilege for thecommand, performs the command for the particular user.
 29. The apparatusof claim 28, wherein the multimedia device configures its operations tothe user based on the user preference information stored at themultimedia device that are associated with the identifier identifyingthe remote control.
 30. The apparatus of claim 28, wherein themultimedia device displays multimedia content based on the user'spreferences stored on the multimedia device.
 31. The apparatus of claim28, wherein the access privilege for the command comprises parentalcontrols.
 32. The apparatus of claim 28, wherein the user preferenceinformation comprises at least one of: parental control configurations,channel lineups, programmable button functions, graphical user interfacepreferences, and room lighting.
 33. The apparatus of claim 28, whereinthe access privilege for the command comprises administrative privilege.34. A non-transitory computer-readable medium storing one or moresequences of instructions for a multimedia personalization system forproviding parental control access privilege on multimedia devices,wherein execution of the one or more sequences of instructions by one ormore processors causes the one or more processors to perform the stepsof: receiving, by a multimedia device, an identifier identifying acommand from a remote control, wherein the identifier comprises userpreference information; associating, by the multimedia device, the userpreference information with a particular user of a plurality of users ofthe multimedia device; determining, by the multimedia device, whetherthe user preference information for the particular user provides accessprivilege for the command; and responsive to the determination that theuser preference information for the particular user provides accessprivilege for the command, performing, by the multimedia device, thecommand for the particular user.
 35. The non-transitorycomputer-readable medium of claim 34, wherein the multimedia deviceconfigures its operations to the user based on the user preferenceinformation stored at the multimedia device that are associated with theidentifier identifying the remote control.
 36. The non-transitorycomputer-readable medium of claim 34, wherein the multimedia devicedisplays multimedia content based on the user's preferences stored onthe multimedia device.
 37. The non-transitory computer-readable mediumof claim 34, wherein the access privilege for the command comprisesparental controls.
 38. The non-transitory computer-readable medium ofclaim 34, wherein the user preference information comprises at least oneof: parental control configurations, channel lineups, programmablebutton functions, graphical user interface preferences, and roomlighting.
 39. The non-transitory computer-readable medium of claim 34,wherein the access privilege for the command comprises administrativeprivilege.